# -*- coding: utf-8 -*-
# @project: huawang-api20230914
# @file： run.py
# @Time：2023/9/11 13:21
# @Author：lizhixiong
import os
import time

import pytest

from config.conf import ALLURE_REPORT, ALLURE_DATA


def main():
    # 时间变量设置
    day = time.strftime('%Y%m%d')
    now_time = time.strftime('%Y%m%d-%H%M%S')

    # 路径
    # data = f'./report/{day}/testreport_{now_time}/'
    # allure_data = data + f'/allure_data'
    # allure_report = data + f'/allure_report'
    allure_report = ALLURE_REPORT
    allure_data = ALLURE_DATA
    # clear_dir(allure_report)  # 清空目录
    # clear_dir(allure_data)  # 清空目录

    """
    用例选择并执行
    """
    # 运行单条用例
    # pytest.main(['-v', 'test_UI.py::Test_PC::test_demo', f'--alluredir={allure_data}'])
    # 运行类下所有用例
    # pytest.main(['-v', 'test_UI.py::Test_PC', f'--alluredir={allure_data}/json_data'])
    # 运行单个用例文件
    # pytest.main(['-v', 'test_UI.py', f'--alluredir={allure_data}'])
    # 运行多个用例文件
    # pytest.main(['-v', 'test_UI.py', 'test_api_applets.py', f'--alluredir={allure_data}'])
    # 运行根目录下所有用例
    # pytest.main(['-v', f'--alluredir={allure_data}'])
    # 运行关键字用例
    # pytest.main(['-v', '-k', 'test_menu_health_check_1', '--alluredir', allure_data])
    # pytest.main(['-v', '-k', 'request or menu or fun_module or applets', '--alluredir', allure_data])
    # pytest.main(['-v', '-k', 'applets', '--alluredir', allure_data])
    # pytest.main(['-v', '-k', 'failed', '--alluredir', allure_data])
    # 运行所有用例
    # pytest.main(['-v', '--alluredir', allure_data])

    # 运行mark用例
    # pytest.main(['-v', '-m', 'new', '--alluredir', allure_data])
    pytest.main(['-v', '-m', 'yg_ui', '--alluredir', allure_data])

    # pytest.main(['-v', './TestCase/test_baidu.py', '--alluredir', allure_data])
    # pytest.main(['-v', './TestCase/test_weixin/', '--alluredir', allure_data])
    # pytest.main(['-v', './TestCase/test_home/test_home.py', '--alluredir', allure_data])
    # pytest.main(['-v', './TestCase/', '--alluredir', allure_data])

    """
    --reruns: 失败重跑次数
    --count: 重复执行次数
    -v: 显示错误位置以及错误的详细信息
    -s: 等价于 pytest --capture=no 可以捕获print函数的输出
    -q: 简化输出信息
    -m: 运行指定标签的测试用例
    -x: 一旦错误，则停止运行
    --maxfail: 设置最大失败次数，当超出这个阈值时，则不会在执行测试用例
    "--reruns=3", "--reruns-delay=2"
    测试
    """

    command_word = f'allure generate {allure_data} -o {allure_report} --clean'
    os.system(command_word)


if __name__ == '__main__':
    main()
